package com.sg.service.biz.bff.impl;

import cn.hutool.core.bean.BeanUtil;
import com.sg.common.util.RedisUtil;
import com.sg.dto.biz.bff.req.*;
import com.sg.dto.biz.bff.res.*;
import com.sg.service.biz.bff.OrgPositionService;
import com.sg.common.exception.Assert;
import com.wicket.okrframework.integration.OrgPositionService;
import com.wicket.okrframework.integration.dto.*;
import org.apache.skywalking.apm.toolkit.trace.Tag;
import org.apache.skywalking.apm.toolkit.trace.Tags;
import org.apache.skywalking.apm.toolkit.trace.Trace;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.stream.Collectors;

/**
 * @author ：
 * @version 1.0
 * @date ：
 */
@Service
public class OrgPositionServiceImpl implements OrgPositionService {

    @Resource
    com.sg.service.biz.framework.OrgPositionService fwBaseOrgPositionClient;
    @Resource
    private RedisUtil redisUtil;

    /**
     * B1-3查询部门职务明细列表（边界）[901]
     * gen by moon at 8/10/2022, 3:31:13 AM
     */
    @Trace(operationName = "B1-3查询部门职务明细列表（边界）")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffQueryDeptPositionInfoListRespDto queryDeptPositionInfoList(BffQueryDeptPositionInfoListReqDto reqDto) {


        QueryDeptPositionInfoListRespDto queryDeptPositionInfoListRespDto_1 = null;
//步骤0: D1-3查询部门职务明细列表 - queryDeptPositionInfoList
        QueryDeptPositionInfoListRespDto queryDeptPositionInfoListRespDto = null;
        QueryDeptPositionInfoListReqDto queryDeptPositionInfoListReqDto = new QueryDeptPositionInfoListReqDto();
        if (reqDto != null) {
            queryDeptPositionInfoListReqDto.setOrgEntityId(reqDto.getOrgEntityId());//sourceId:48847_1
        }

        /*D1-3查询部门职务明细列表[1082]   */
        Assert.isNull(queryDeptPositionInfoListReqDto.getOrgEntityId(), "B1-3查询部门职务明细列表（边界）-D1-3查询部门职务明细列表-所属对象实例ID不能为空", false);
        queryDeptPositionInfoListRespDto = fwBaseOrgPositionClient.queryDeptPositionInfoList(queryDeptPositionInfoListReqDto).getData();

        queryDeptPositionInfoListRespDto_1 = queryDeptPositionInfoListRespDto;

        BffQueryDeptPositionInfoListRespDto retData = new BffQueryDeptPositionInfoListRespDto();
        if (queryDeptPositionInfoListRespDto_1 != null) {
            retData.setOrgPositionList(queryDeptPositionInfoListRespDto_1.getOrgPositionList().stream().map(item -> BeanUtil.toBean(item, BffOrgPositionDto.class)).collect(Collectors.toList()));//sourceId:48864_1
        }


        return retData;
    }

    /**
     * B1-3查询部门下岗位列表（边界）[1486]
     * gen by moon at 8/10/2022, 3:35:49 AM
     */
    @Trace(operationName = "B1-3查询部门下岗位列表（边界）")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffQueryDeptStationListBorderRespDto queryDeptStationListBorder(BffQueryDeptStationListBorderReqDto reqDto) {


        QueryDeptStationListRespDto queryDeptStationListRespDto_1 = null;
//步骤0: D1-3查询部门下岗位列表 - queryDeptStationList
        QueryDeptStationListRespDto queryDeptStationListRespDto = null;
        QueryDeptStationListReqDto queryDeptStationListReqDto = new QueryDeptStationListReqDto();
        if (reqDto != null) {
            queryDeptStationListReqDto.setOrgEntityId(reqDto.getOrgEntityId());//sourceId:48955_1
        }

        /*D1-3查询部门下岗位列表[1472]   */
        Assert.isNull(queryDeptStationListReqDto.getOrgEntityId(), "B1-3查询部门下岗位列表（边界）-D1-3查询部门下岗位列表-所属对象实例ID不能为空", false);
        queryDeptStationListRespDto = fwBaseOrgPositionClient.queryDeptStationList(queryDeptStationListReqDto).getData();

        queryDeptStationListRespDto_1 = queryDeptStationListRespDto;

        BffQueryDeptStationListBorderRespDto retData = new BffQueryDeptStationListBorderRespDto();
        if (queryDeptStationListRespDto_1 != null) {
            retData.setStationList(queryDeptStationListRespDto_1.getStationList().stream().map(item -> BeanUtil.toBean(item, BffStationDto.class)).collect(Collectors.toList()));//sourceId:48958_1
        }


        retData.setPageNum(queryDeptStationListRespDto.getPageNum());
        retData.setPageSize(queryDeptStationListRespDto.getPageSize());
        retData.setTotal(queryDeptStationListRespDto.getTotalNum());
        retData.setIsLastPage((Math.ceil(Double.valueOf(queryDeptStationListRespDto.getTotalNum()) / Double.valueOf(queryDeptStationListRespDto.getPageSize()))) <= retData.getPageNum());


        return retData;
    }

    /**
     * B1-3查询部门岗位明细列表（边界）[1388]
     * gen by moon at 8/10/2022, 3:35:13 AM
     */
    @Trace(operationName = "B1-3查询部门岗位明细列表（边界）")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffQueryDeptSatAndPstListRespDto queryDeptSatAndPstList(BffQueryDeptSatAndPstListReqDto reqDto) {


        QueryDeptStationInfoListRespDto queryDeptStationInfoListRespDto_1 = null;
//步骤0: D1-3查询组织/部门岗位明细列表 - queryDeptStationInfoList
        QueryDeptStationInfoListRespDto queryDeptStationInfoListRespDto = null;
        QueryDeptStationInfoListReqDto queryDeptStationInfoListReqDto = new QueryDeptStationInfoListReqDto();
        queryDeptStationInfoListReqDto.setOrgTypeCode("DEPARTMENT");//sourceId:54140_1
        if (reqDto != null) {
            queryDeptStationInfoListReqDto.setOrgEntityId(reqDto.getOrgEntityId());//sourceId:48883_1
        }

        /*D1-3查询组织/部门岗位明细列表[1652]   */
        Assert.isNull(queryDeptStationInfoListReqDto.getOrgEntityId(), "B1-3查询部门岗位明细列表（边界）-D1-3查询组织/部门岗位明细列表-所属对象实例ID不能为空", false);
        Assert.isNull(queryDeptStationInfoListReqDto.getOrgTypeCode(), "B1-3查询部门岗位明细列表（边界）-D1-3查询组织/部门岗位明细列表-所属实例类型编码不能为空", false);
        queryDeptStationInfoListRespDto = fwBaseOrgPositionClient.queryDeptStationInfoList(queryDeptStationInfoListReqDto).getData();

        queryDeptStationInfoListRespDto_1 = queryDeptStationInfoListRespDto;

        BffQueryDeptSatAndPstListRespDto retData = new BffQueryDeptSatAndPstListRespDto();
        if (queryDeptStationInfoListRespDto_1 != null) {
            retData.setStationList(queryDeptStationInfoListRespDto_1.getStationList().stream().map(item -> BeanUtil.toBean(item, BffStationDto.class)).collect(Collectors.toList()));//sourceId:48886_1
        }


        return retData;
    }

    /**
     * B1-3查询部门职务列表（边界）[1380]
     * gen by moon at 8/10/2022, 3:35:09 AM
     */
    @Trace(operationName = "B1-3查询部门职务列表（边界）")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffQueryDeptPositionListBorderRespDto queryDeptPositionListBorder(BffQueryDeptPositionListBorderReqDto reqDto) {


        QueryOrgDeptPositionListBorderRespDto queryOrgDeptPositionListBorderRespDto_1 = null;
//步骤0: D1-3查询组织部门职务列表（边界） - queryOrgDeptPositionListBorder
        QueryOrgDeptPositionListBorderRespDto queryOrgDeptPositionListBorderRespDto = null;
        QueryOrgDeptPositionListBorderReqDto queryOrgDeptPositionListBorderReqDto = new QueryOrgDeptPositionListBorderReqDto();
        if (reqDto != null) {
            queryOrgDeptPositionListBorderReqDto.setOrgTypeCode(reqDto.getOrgTypeCode());//sourceId:35750_1
            queryOrgDeptPositionListBorderReqDto.setOrgEntityId(reqDto.getOrgEntityId());//sourceId:35751_1
            queryOrgDeptPositionListBorderReqDto.setPositionGradeId(reqDto.getPositionGradeId());//sourceId:35968_1
        }

        /*D1-3查询组织部门职务列表（边界）[1456]   */
        Assert.isNull(queryOrgDeptPositionListBorderReqDto.getOrgTypeCode(), "B1-3查询部门职务列表（边界）-D1-3查询组织部门职务列表（边界）-所属实例类型编码不能为空", false);
        Assert.isNull(queryOrgDeptPositionListBorderReqDto.getOrgEntityId(), "B1-3查询部门职务列表（边界）-D1-3查询组织部门职务列表（边界）-所属对象实例ID不能为空", false);
        queryOrgDeptPositionListBorderRespDto = fwBaseOrgPositionClient.queryOrgDeptPositionListBorder(queryOrgDeptPositionListBorderReqDto).getData();

        queryOrgDeptPositionListBorderRespDto_1 = queryOrgDeptPositionListBorderRespDto;

        BffQueryDeptPositionListBorderRespDto retData = new BffQueryDeptPositionListBorderRespDto();
        if (queryOrgDeptPositionListBorderRespDto_1 != null) {
            retData.setOrgDeptPositionList(queryOrgDeptPositionListBorderRespDto_1.getOrgDeptPositionList().stream().map(item -> BeanUtil.toBean(item, BffOrgDeptPositionDto.class)).collect(Collectors.toList()));//sourceId:35757_1
        }


        return retData;
    }

    /**
     * B1-3查询组织岗位列表（边界）[1783]
     * gen by moon at 8/10/2022, 3:37:37 AM
     */
    @Trace(operationName = "B1-3查询组织岗位列表（边界）")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffQueryOrgStationListRespDto queryOrgStationList(BffQueryOrgStationListReqDto reqDto) {


        QueryDeptStationInfoListRespDto queryDeptStationInfoListRespDto_1 = null;
//步骤0: D1-3查询组织/部门岗位明细列表 - queryDeptStationInfoList
        QueryDeptStationInfoListRespDto queryDeptStationInfoListRespDto = null;
        QueryDeptStationInfoListReqDto queryDeptStationInfoListReqDto = new QueryDeptStationInfoListReqDto();
        queryDeptStationInfoListReqDto.setOrgTypeCode("ORGANIZATION");//sourceId:54215_1
        if (reqDto != null) {
            queryDeptStationInfoListReqDto.setOrgEntityId(reqDto.getOrgEntityId());//sourceId:54213_1
            queryDeptStationInfoListReqDto.setStationTypeId(reqDto.getStationTypeId());//sourceId:54216_1
        }

        /*D1-3查询组织/部门岗位明细列表[1652]   */
        Assert.isNull(queryDeptStationInfoListReqDto.getOrgTypeCode(), "B1-3查询组织岗位列表（边界）-D1-3查询组织/部门岗位明细列表-所属实例类型编码不能为空", false);
        Assert.isNull(queryDeptStationInfoListReqDto.getOrgEntityId(), "B1-3查询组织岗位列表（边界）-D1-3查询组织/部门岗位明细列表-所属对象实例ID不能为空", false);
        queryDeptStationInfoListRespDto = fwBaseOrgPositionClient.queryDeptStationInfoList(queryDeptStationInfoListReqDto).getData();

        queryDeptStationInfoListRespDto_1 = queryDeptStationInfoListRespDto;

        BffQueryOrgStationListRespDto retData = new BffQueryOrgStationListRespDto();
        if (queryDeptStationInfoListRespDto_1 != null) {
            retData.setStationList(queryDeptStationInfoListRespDto_1.getStationList().stream().map(item -> BeanUtil.toBean(item, BffStationDto.class)).collect(Collectors.toList()));//sourceId:54221_1
        }


        return retData;
    }

    /**
     * B1-3查询部门岗位列表（边界）[1782]
     * gen by moon at 8/10/2022, 3:37:36 AM
     */
    @Trace(operationName = "B1-3查询部门岗位列表（边界）")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffQueryDeptStationListRespDto queryDeptStationList(BffQueryDeptStationListReqDto reqDto) {


        QueryDeptStationInfoListRespDto queryDeptStationInfoListRespDto_1 = null;
//步骤0: D1-3查询组织/部门岗位明细列表 - queryDeptStationInfoList
        QueryDeptStationInfoListRespDto queryDeptStationInfoListRespDto = null;
        QueryDeptStationInfoListReqDto queryDeptStationInfoListReqDto = new QueryDeptStationInfoListReqDto();
        queryDeptStationInfoListReqDto.setOrgTypeCode("DEPARTMENT");//sourceId:54141_1
        if (reqDto != null) {
            queryDeptStationInfoListReqDto.setOrgEntityId(reqDto.getOrgEntityId());//sourceId:54135_1
            queryDeptStationInfoListReqDto.setStationTypeId(reqDto.getStationTypeId());//sourceId:54196_1
        }

        /*D1-3查询组织/部门岗位明细列表[1652]   */
        Assert.isNull(queryDeptStationInfoListReqDto.getOrgTypeCode(), "B1-3查询部门岗位列表（边界）-D1-3查询组织/部门岗位明细列表-所属实例类型编码不能为空", false);
        Assert.isNull(queryDeptStationInfoListReqDto.getOrgEntityId(), "B1-3查询部门岗位列表（边界）-D1-3查询组织/部门岗位明细列表-所属对象实例ID不能为空", false);
        queryDeptStationInfoListRespDto = fwBaseOrgPositionClient.queryDeptStationInfoList(queryDeptStationInfoListReqDto).getData();

        queryDeptStationInfoListRespDto_1 = queryDeptStationInfoListRespDto;

        BffQueryDeptStationListRespDto retData = new BffQueryDeptStationListRespDto();
        if (queryDeptStationInfoListRespDto_1 != null) {
            retData.setStationList(queryDeptStationInfoListRespDto_1.getStationList().stream().map(item -> BeanUtil.toBean(item, BffStationDto.class)).collect(Collectors.toList()));//sourceId:54138_1
        }


        return retData;
    }

    /**
     * B1-3查询职务归属组织列表（管理）[1495]
     * gen by moon at 8/10/2022, 3:35:51 AM
     */
    @Trace(operationName = "B1-3查询职务归属组织列表（管理）")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffQueryPositionOrgListRespDto queryPositionOrgList(BffQueryPositionOrgListReqDto reqDto) {


        QueryPositionOrgListRespDto queryPositionOrgListRespDto_1 = null;
//步骤0: D1-3查询职务归属组织列表 - queryPositionOrgList
        QueryPositionOrgListRespDto queryPositionOrgListRespDto = null;
        QueryPositionOrgListReqDto queryPositionOrgListReqDto = new QueryPositionOrgListReqDto();
        if (reqDto != null) {
            queryPositionOrgListReqDto.setPositionId(reqDto.getPositionId());//sourceId:40101_1
        }

        /*D1-3查询职务归属组织列表[1498]   */
        Assert.isNull(queryPositionOrgListReqDto.getPositionId(), "B1-3查询职务归属组织列表（管理）-D1-3查询职务归属组织列表-职务ID不能为空", false);
        queryPositionOrgListRespDto = fwBaseOrgPositionClient.queryPositionOrgList(queryPositionOrgListReqDto).getData();

        queryPositionOrgListRespDto_1 = queryPositionOrgListRespDto;

        BffQueryPositionOrgListRespDto retData = new BffQueryPositionOrgListRespDto();
        if (queryPositionOrgListRespDto_1 != null) {
            retData.setOrgDeptPositionList(queryPositionOrgListRespDto_1.getOrgDeptPositionList().stream().map(item -> BeanUtil.toBean(item, BffOrgDeptPositionDto.class)).collect(Collectors.toList()));//sourceId:63336_1
        }


        return retData;
    }
    //
}
